{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "# 第二章 数据类型，运算符，内置函数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 填空题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-10\n"
     ]
    }
   ],
   "source": [
    "a=-68//7#//为整除，有向下取整特点\r\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "|: {50, 70, 40, 60}\n",
      "&: {40, 60}\n",
      "-: {50}\n"
     ]
    }
   ],
   "source": [
    "b = {40, 50, 60}\n",
    "c = {40, 60, 70}\n",
    "#并集\n",
    "print(\"|:\",b|c)\n",
    "#交集\n",
    "print(\"&:\",b&c)\n",
    "#差集=b并c-b交c\n",
    "print(\"-:\",b-c)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3\n"
     ]
    }
   ],
   "source": [
    "print(chr(ord('0')+3))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 判断题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "False\n"
     ]
    }
   ],
   "source": [
    "print(3>5 and math.sin(0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n"
     ]
    }
   ],
   "source": [
    "print(4<5==5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 编程题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入包含若干自然数的列表：平均值为： 2.0\n"
     ]
    }
   ],
   "source": [
    "data = eval(input('请输入包含若干自然数的列表：'))\n",
    "avg = sum(data) / len(data)\n",
    "avg = round(avg, 3)\n",
    "print('平均值为：', avg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入包含若干自然数的列表：降序排列后的列表： [3, 2, 1]\n"
     ]
    }
   ],
   "source": [
    "data = eval(input('请输入包含若干自然数的列表：'))\n",
    "print('降序排列后的列表：', sorted(data, reverse=True))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入包含若干自然数的列表：每个元素的位数： [1, 1, 1]\n"
     ]
    }
   ],
   "source": [
    "data = eval(input('请输入包含若干自然数的列表：'))\n",
    "data = map(str, data)\n",
    "length = list(map(len, data))\n",
    "print('每个元素的位数：', length)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入包含若干自然数的列表：绝对值最大的数字： 3\n"
     ]
    }
   ],
   "source": [
    "data = eval(input('请输入包含若干自然数的列表：'))\n",
    "print('绝对值最大的数字：', max(data, key=abs))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入包含若干自然数的列表：乘积： 6\n"
     ]
    }
   ],
   "source": [
    "from operator import mul\n",
    "from functools import reduce\n",
    "\n",
    "data = eval(input('请输入包含若干自然数的列表：'))\n",
    "print('乘积：', reduce(mul, data))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入第一个向量："
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入第二个向量：内积： 11\n"
     ]
    }
   ],
   "source": [
    "from operator import mul\n",
    "from functools import reduce\n",
    "\n",
    "vec1 = eval(input('请输入第一个向量：'))\n",
    "vec2 = eval(input('请输入第二个向量：'))\n",
    "print('内积：', sum(map(mul, vec1, vec2)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 第三章练习"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "# 第三章 列表、元组、字典、集合与字符串"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 列表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[]\n",
      "[1, 2, 3, 4, 5, 6]\n",
      "[1.1, 1.2, 1.3, 1.4, 1.5, 1.6]\n",
      "['apple', 'banana', 'cherry']\n",
      "[True, False, True]\n",
      "[[1, 2], [3, 4]]\n",
      "[1, 'apple', 3.14, True]\n",
      "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n",
      "[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]\n",
      "[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]\n",
      "[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]\n",
      "[1, 2, 3, 4, 5, 6]\n",
      "['hello', 'world']\n",
      "[(1, 2), (3, 4), (4, 5)]\n",
      "[{'name': 'Lao'}, {'name': 'WZT'}]\n",
      "[1, 2]\n",
      "[1, 2, 3, 4, 5]\n",
      "[1, 2, 3, 4]\n",
      "[1, 2, 4, 5, 6]\n",
      "[1, 2, 3, 4, 5]\n"
     ]
    }
   ],
   "source": [
    "list_1 = []#空列表\n",
    "print(list_1)\n",
    "list_2 = [1,2,3,4,5,6]#包含整数的列表\n",
    "print(list_2)\n",
    "list_3 = [1.1,1.2,1.3,1.4,1.5,1.6]#包含浮点数的列表\n",
    "print(list_3)\n",
    "list_4 = [\"apple\",\"banana\",\"cherry\"]#包含字符串的列表\n",
    "print(list_4)\n",
    "list_5 = [True,False,True]#包含布尔值的列表\n",
    "print(list_5)\n",
    "list_6 = [[1,2],[3,4]]#嵌套列表\n",
    "print(list_6)\n",
    "list_7 = [1,\"apple\",3.14,True]\n",
    "print(list_7)\n",
    "list_8 = list(range(10))\n",
    "print(list_8)\n",
    "list_9 = [x*2 for x in range(10)]\n",
    "print(list_9)\n",
    "list_10 = list_9[:]#复制列表\n",
    "print(list_10)\n",
    "list_11 = [0]*10\n",
    "print(list_11)\n",
    "list_12 = list_1+list_2\n",
    "print(list_12)\n",
    "list_13 = \"hello world\".split()\n",
    "print(list_13)\n",
    "list_14 = [(1,2),(3,4),(4,5)]\n",
    "print(list_14)\n",
    "list_15 = [{\"name\":\"Lao\"},{\"name\":\"WZT\"}]\n",
    "print(list_15)\n",
    "#利用append()\n",
    "list_16 = []\n",
    "list_16.append(1)\n",
    "list_16.append(2)\n",
    "print(list_16)\n",
    "#利用extend方法扩张列表扩张列表\n",
    "list_17 = [1,2]\n",
    "list_17.extend([3,4,5])\n",
    "print(list_17)\n",
    "#利用insert方法输入元素\n",
    "list_18 = [1,3,4]\n",
    "list_18.insert(1,2)\n",
    "print(list_18)\n",
    "\n",
    "#利用remove方法上删除元素\n",
    "list_19 = [1,2,3,4,5,6]\n",
    "list_19.remove(3)\n",
    "print(list_19)\n",
    "\n",
    "#利用pop方法烫除元素弹出元素\n",
    "list_20 = [1,2,3,4,5,6]\n",
    "list_20.pop()\n",
    "print(list_20)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 元组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "()\n",
      "(1, 2, 3, 4, 5, 6)\n",
      "(1.1, 1.2, 1.3, 1.5)\n",
      "('apple', 'banana', 'cherry')\n",
      "(True, False, True)\n",
      "((1, 2), (3, 4))\n",
      "(1, 'apple', 3.14, True)\n",
      "(1,)\n",
      "(1, 2, 3, 4)\n",
      "([1, 2], [2, 3], [4, 5])\n",
      "({'name': 'Lao'}, {'name': 'WZT'})\n",
      "({1, 2}, {3, 4})\n",
      "(1, 2, 3)\n",
      "('h', 'e', 'l', 'l', 'o')\n",
      "(<function func at 0x7f500a21c940>, 'hello')\n",
      "((1, 2), (3, 4))\n",
      "(None, 1, None, 2, 3, 'apple')\n",
      "(1, 2, 3, 2, 3, 4)\n",
      "(1, 1, 1, 1, 1)\n",
      "(2, 3, 4)\n"
     ]
    }
   ],
   "source": [
    "tuple_1 = ()\n",
    "print(tuple_1)\n",
    "tuple_2 = (1,2,3,4,5,6)\n",
    "print(tuple_2)\n",
    "tuple_3 = (1.1,1.2,1.3,1.5)\n",
    "print(tuple_3)\n",
    "\n",
    "tuple_4 = (\"apple\",\"banana\",\"cherry\")\n",
    "print(tuple_4)\n",
    "\n",
    "tuple_5 = (True,False,True)\n",
    "print(tuple_5)\n",
    "\n",
    "tuple_6 = ((1,2),(3,4))\n",
    "print(tuple_6)\n",
    "\n",
    "tuple_7 = (1,\"apple\",3.14,True)\n",
    "print(tuple_7)\n",
    "\n",
    "tuple_8 = (1,)\n",
    "print(tuple_8)\n",
    "\n",
    "tuple_9 = tuple([1,2,3,4])\n",
    "print(tuple_9)\n",
    "\n",
    "tuple_10 = ([1,2],[2,3],[4,5])\n",
    "print(tuple_10)\n",
    "\n",
    "tuple_11 = ({\"name\":\"Lao\"},{\"name\":\"WZT\"})\n",
    "print(tuple_11)\n",
    "\n",
    "tuple_12 = ({1,2},{3,4})\n",
    "print(tuple_12)\n",
    "\n",
    "a,b,c = 1,2,3\n",
    "tuple_13 = (a,b,c)\n",
    "print(tuple_13)\n",
    "\n",
    "tuple_14 = tuple(\"hello\")\n",
    "print(tuple_14)\n",
    "\n",
    "def func():\n",
    "    return \"hello\"\n",
    "tuple_15 = (func,func())\n",
    "print(tuple_15)\n",
    "\n",
    "tuple_16 = ((1,2),(3,4))\n",
    "print(tuple_16)\n",
    "\n",
    "tuple_17 = (None,1,None,2,3,\"apple\")\n",
    "print(tuple_17)\n",
    "\n",
    "tuple_18 = (1,2,3) + (2,3,4)\n",
    "print(tuple_18)\n",
    "\n",
    "tuple_19 = (1,)*5\n",
    "print(tuple_19)\n",
    "\n",
    "tuple_20 = (1,2,3,4,5,6,7,8)[1:4]\n",
    "print(tuple_20)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 字典"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{}\n",
      "{1: 'one', 2: 'two', 3: 'three'}\n",
      "{'name': 'Alice', 'age': 25, 'city': 'New York'}\n",
      "{1: 'one', 'name': 'Alice', 3.14: 'pi'}\n",
      "{'person': {'name': 'Alice', 'age': 25}, 'city': 'New York'}\n",
      "{'fruits': ['apple', 'banana', 'cherry'], 'numbers': [1, 2, 3]}\n",
      "{'coordinates': (10, 20), 'dimensions': (200, 400)}\n",
      "{'name': 'Alice', 'age': 25, 'city': 'New York'}\n",
      "{'name': 'Alice', 'age': 25, 'city': 'New York'}\n",
      "{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}\n",
      "{'name': 'Alice', 'age': 25, 'city': 'New York'}\n",
      "{'is_student': True, 'is_employed': False}\n",
      "{'name': None, 'age': 25, 'city': 'New York'}\n",
      "{'name': 'Alice', 'age': 25, 'city': 'New York'}\n",
      "{'even_numbers': {8, 2, 4, 6}, 'odd_numbers': {1, 3, 5, 7}}\n",
      "{'name': 'Alice', 'age': 26}\n",
      "{'name': 'Alice'}\n",
      "{'name': 'Alice'}\n",
      "{'name': 'Alice', 'age': 25}\n",
      "{'name': 'Alice', 'age': 25, 'city': 'New York', 'country': 'USA'}\n"
     ]
    }
   ],
   "source": [
    "dict_1 = {}\n",
    "print(dict_1)\n",
    "\n",
    "dict_2 = {1: \"one\", 2: \"two\", 3: \"three\"}\n",
    "print(dict_2)\n",
    "\n",
    "\n",
    "dict_3 = {\"name\": \"Alice\", \"age\": 25, \"city\": \"New York\"}\n",
    "print(dict_3)\n",
    "\n",
    "\n",
    "dict_4 = {1: \"one\", \"name\": \"Alice\", 3.14: \"pi\"}\n",
    "print(dict_4)\n",
    "\n",
    "dict_5 = {\"person\": {\"name\": \"Alice\", \"age\": 25}, \"city\": \"New York\"}\n",
    "print(dict_5)\n",
    "\n",
    "dict_6 = {\"fruits\": [\"apple\", \"banana\", \"cherry\"], \"numbers\": [1, 2, 3]}\n",
    "print(dict_6)\n",
    "\n",
    "dict_7 = {\"coordinates\": (10, 20), \"dimensions\": (200, 400)}\n",
    "print(dict_7)\n",
    "\n",
    "dict_8 = dict(name=\"Alice\", age=25, city=\"New York\")\n",
    "print(dict_8)\n",
    "\n",
    "dict_9 = dict([(\"name\", \"Alice\"), (\"age\", 25), (\"city\", \"New York\")])\n",
    "print(dict_9)\n",
    "\n",
    "dict_10 = {x: x**2 for x in range(5)}\n",
    "print(dict_10)\n",
    "\n",
    "keys = [\"name\", \"age\", \"city\"]\n",
    "values = [\"Alice\", 25, \"New York\"]\n",
    "dict_11 = dict(zip(keys, values))\n",
    "print(dict_11)\n",
    "\n",
    "dict_12 = {\"is_student\": True, \"is_employed\": False}\n",
    "print(dict_12)\n",
    "\n",
    "dict_13 = {\"name\": None, \"age\": 25, \"city\": \"New York\"}\n",
    "print(dict_13)\n",
    "\n",
    "\n",
    "keys = [\"name\", \"age\", \"city\"]\n",
    "values = [\"Alice\", 25, \"New York\"]\n",
    "dict_14 = {k: v for k, v in zip(keys, values)}\n",
    "print(dict_14)\n",
    "\n",
    "dict_15 = {\"even_numbers\": {2, 4, 6, 8}, \"odd_numbers\": {1, 3, 5, 7}}\n",
    "print(dict_15)\n",
    "\n",
    "\n",
    "dict_16 = {\"name\": \"Alice\", \"age\": 25}\n",
    "dict_16[\"age\"] = 26\n",
    "print(dict_16)\n",
    "\n",
    "\n",
    "dict_17 = {\"name\": \"Alice\", \"age\": 25}\n",
    "del dict_17[\"age\"]\n",
    "print(dict_17)\n",
    "\n",
    "dict_18 = {\"name\": \"Alice\", \"age\": 25}\n",
    "age = dict_18.pop(\"age\")\n",
    "print(dict_18)\n",
    "\n",
    "\n",
    "dict_19 = {\"name\": \"Alice\"}\n",
    "dict_19.setdefault(\"age\", 25)\n",
    "print(dict_19)\n",
    "\n",
    "\n",
    "dict20 = {\"name\": \"Alice\", \"age\": 25}\n",
    "dict21 = {\"city\": \"New York\", \"country\": \"USA\"}\n",
    "merged_dict = {**dict20, **dict21}\n",
    "print(merged_dict)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 集合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "set()\n",
      "{1, 2, 3, 4, 5}\n",
      "{1.1, 2.2, 3.3, 4.4, 5.5}\n",
      "{'apple', 'banana', 'cherry'}\n",
      "{False, True}\n",
      "{'apple', 3.14, 1}\n",
      "{1, 2, 3, 4, 5}\n",
      "{1, 2, 3, 4, 5}\n",
      "{'o', 'l', 'h', 'e'}\n",
      "{0, 2, 4, 6, 8, 10, 12, 14, 16, 18}\n",
      "{1, 2, 3, 4}\n",
      "{1, 2, 4}\n",
      "{1, 2, 3, 4}\n",
      "1\n",
      "set()\n",
      "{1, 2, 3, 4, 5}\n",
      "{3}\n",
      "{1, 2}\n",
      "{1, 2, 4, 5}\n",
      "True\n"
     ]
    }
   ],
   "source": [
    "empty_set = set()\n",
    "print(empty_set)\n",
    "\n",
    "int_set = {1, 2, 3, 4, 5}\n",
    "print(int_set)\n",
    "\n",
    "float_set = {1.1, 2.2, 3.3, 4.4, 5.5}\n",
    "print(float_set)\n",
    "\n",
    "str_set = {\"apple\", \"banana\", \"cherry\"}\n",
    "print(str_set)\n",
    "\n",
    "bool_set = {True, False}\n",
    "print(bool_set)\n",
    "\n",
    "mixed_set = {1, \"apple\", 3.14, True}\n",
    "print(mixed_set)\n",
    "\n",
    "list_to_set = set([1, 2, 3, 4, 5])\n",
    "print(list_to_set)\n",
    "\n",
    "tuple_to_set = set((1, 2, 3, 4, 5))\n",
    "print(tuple_to_set)\n",
    "\n",
    "\n",
    "string_to_set = set(\"hello\")\n",
    "print(string_to_set)\n",
    "\n",
    "comprehension_set = {x * 2 for x in range(10)}\n",
    "print(comprehension_set)\n",
    "\n",
    "add_element_set = {1, 2, 3}\n",
    "add_element_set.add(4)\n",
    "print(add_element_set)\n",
    "\n",
    "remove_element_set = {1, 2, 3, 4}\n",
    "remove_element_set.remove(3)\n",
    "print(remove_element_set)\n",
    "\n",
    "discard_element_set = {1, 2, 3, 4}\n",
    "discard_element_set.discard(5)\n",
    "print(discard_element_set)\n",
    "\n",
    "\n",
    "pop_element_set = {1, 2, 3, 4, 5}\n",
    "popped_element = pop_element_set.pop()\n",
    "print(popped_element)\n",
    "\n",
    "clear_set = {1, 2, 3}\n",
    "clear_set.clear()\n",
    "print(clear_set)\n",
    "\n",
    "set_a = {1, 2, 3}\n",
    "set_b = {3, 4, 5}\n",
    "union_set = set_a | set_b\n",
    "print(union_set)\n",
    "\n",
    "\n",
    "set_a = {1, 2, 3}\n",
    "set_b = {3, 4, 5}\n",
    "intersection_set = set_a & set_b\n",
    "print(intersection_set)\n",
    "\n",
    "set_a = {1, 2, 3}\n",
    "set_b = {3, 4, 5}\n",
    "difference_set = set_a - set_b\n",
    "print(difference_set)\n",
    "\n",
    "\n",
    "set_a = {1, 2, 3}\n",
    "set_b = {3, 4, 5}\n",
    "symmetric_difference_set = set_a ^ set_b\n",
    "print(symmetric_difference_set)\n",
    "\n",
    "subset_a = {1, 2}\n",
    "superset_b = {1, 2, 3, 4}\n",
    "is_subset = subset_a.issubset(superset_b)\n",
    "print(is_subset)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 字符串"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "hello, world\n",
      "This is a\n",
      "multi-line string\n",
      "He said, \"Hello!\"\n",
      "It's a sunny day\n",
      "第一步 line\n",
      "Second line\n",
      "C:\\Users\\Name\n",
      "Hello, Alice\n",
      "Hello, Charlie\n",
      "hahaha\n",
      "Hello, world\n",
      "今天天气不\n",
      "7\n",
      "Hello, Python\n",
      "['apple', 'banana', 'cherry']\n",
      "apple,banana,cherry\n",
      "HELLO\n",
      "hello\n",
      "hello\n"
     ]
    }
   ],
   "source": [
    "empty_str = \"\"\n",
    "print(empty_str)\n",
    "\n",
    "simple_str = \"hello, world\"\n",
    "print(simple_str)\n",
    "\n",
    "multi_line_str = \"\"\"This is a\n",
    "multi-line string\"\"\"\n",
    "print(multi_line_str)\n",
    "\n",
    "quote_str = 'He said, \"Hello!\"'\n",
    "print(quote_str)\n",
    "\n",
    "single_quote_str = \"It's a sunny day\"\n",
    "print(single_quote_str)\n",
    "\n",
    "escaped_str = \"第一步 line\\nSecond line\"\n",
    "print(escaped_str)\n",
    "\n",
    "raw_str = r\"C:\\Users\\Name\"\n",
    "print(raw_str)\n",
    "\n",
    "formatted_str = \"Hello, %s\" % \"Alice\"\n",
    "print(formatted_str)\n",
    "\n",
    "name = \"Charlie\"\n",
    "f_str = f\"Hello, {name}\"\n",
    "print(f_str)\n",
    "\n",
    "repeated_str = \"ha\" * 3\n",
    "print(repeated_str)\n",
    "\n",
    "concatenated_str = \"Hello, \" + \"world\"\n",
    "print(concatenated_str)\n",
    "\n",
    "sliced_str = \"今天天气不错\"[0:5]\n",
    "print(sliced_str)\n",
    "\n",
    "find_str = \"Hello, world\".find(\"world\")\n",
    "print(find_str)\n",
    "\n",
    "replace_str = \"Hello, world\".replace(\"world\", \"Python\")\n",
    "print(replace_str)\n",
    "\n",
    "split_str = \"apple,banana,cherry\".split(\",\")\n",
    "print(split_str)\n",
    "\n",
    "joined_str = \",\".join([\"apple\", \"banana\", \"cherry\"])\n",
    "print(joined_str)\n",
    "\n",
    "upper_str = \"hello\".upper()\n",
    "print(upper_str)\n",
    "\n",
    "lower_str = \"HELLO\".lower()\n",
    "print(lower_str)\n",
    "\n",
    "strip_str = \" hello \".strip()\n",
    "print(strip_str)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 课后习题"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "### 填空题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "None\n"
     ]
    }
   ],
   "source": [
    "df1 = [1,2,3,4]\n",
    "print(df1.sort())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[3, 4]\n"
     ]
    }
   ],
   "source": [
    "#列表索引index从0开始\n",
    "data = [1,2,3,4]\n",
    "print(data[2:100])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3\n"
     ]
    }
   ],
   "source": [
    "x=3\n",
    "y=4\n",
    "x,y=y,x\n",
    "print(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "97\n"
     ]
    }
   ],
   "source": [
    "data = {'a':97,'A':65}\n",
    "print(data.get('a',None))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "### 编程题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入一个字符串：Counter({'a': 2, 's': 1, 'v': 1, 'u': 1, 'c': 1, 'b': 1, 'w': 1, 'e': 1})\n"
     ]
    }
   ],
   "source": [
    "from collections import Counter\n",
    "\n",
    "text = input('请输入一个字符串：')\n",
    "frequencies = Counter(text)\n",
    "print(frequencies)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入一个字符串：[('v', 0), ('u', 1), ('w', 2), ('g', 3), ('d', 4), ('f', 5), ('q', 6)]\n"
     ]
    }
   ],
   "source": [
    "text = input('请输入一个字符串：')\n",
    "positions = [(ch, index) for index, ch in enumerate(text)\n",
    "              if text.index(ch)==text.rindex(ch)]\n",
    "print(positions)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入一个字符串：[('d', 0), ('w', 1), ('e', 2), ('f', 3), ('q', 4), ('b', 5), ('i', 6)]\n"
     ]
    }
   ],
   "source": [
    "text = input('请输入一个字符串：')\n",
    "positions = [(ch, index) for index, ch in enumerate(text)\n",
    "              if index==text.rindex(ch)]\n",
    "print(positions)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入包含若干集合的列表：{1, 123}\n"
     ]
    }
   ],
   "source": [
    "from operator import __or__\n",
    "from functools import reduce\n",
    "\n",
    "sets = eval(input('请输入包含若干集合的列表：'))\n",
    "union = reduce(__or__, sets, set())\n",
    "print(union)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入一个字符串：\u0013\u0002\u0006\f",
      "\u0012\n"
     ]
    }
   ],
   "source": [
    "text = input('请输入一个字符串：')\n",
    "result = [chr(abs(ord(ch)-ord(text[index+1])))\n",
    "           for index, ch in enumerate(text[:-1])]\n",
    "result.append(chr(abs(ord(text[-1])-ord(text[0]))))\n",
    "print(''.join(result))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入一个字符串：No\n"
     ]
    }
   ],
   "source": [
    "text = input('请输入一个字符串：')\n",
    "if text==text[::-1]:\n",
    "    print('Yes')\n",
    "else:\n",
    "    print('No')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "### 操作题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0:97\n",
      "1:98\n",
      "2:105\n",
      "3:106\n",
      "4:98\n",
      "5:110\n",
      "6:97\n",
      "7:90\n",
      "8:109\n",
      "9:90\n"
     ]
    }
   ],
   "source": [
    "from string import digits\n",
    "from random import choice\n",
    "from collections import Counter\n",
    "\n",
    "z = ''.join(choice(digits) for i in range(1000))\n",
    "result = Counter(z)\n",
    "for digit, fre in sorted(result.items()):\n",
    "    print(digit, fre, sep=':')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "# 第4章 程序控制结构、函数定义与使用"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 课堂练习"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入月利润(元): 应发放奖金总数为: 1.1 元\n"
     ]
    }
   ],
   "source": [
    "'''\n",
    "question 1\n",
    "企业发放的奖金根据利淘提成。利淘(I)低于或等于10万元吋,奖金可提10%;\n",
    "利润高于10万元,低于或等于20万元吋, 10万的部分按10%提成，高于10万元的部分,可提成7.5%; \n",
    "20万到40万元(含) 之同肘,高于20万元的部分，可提成5%; \n",
    "40万元到60万元(含)之间时高于40万元的部分，可提成3%; \n",
    "60万元到100万元()之同吋，高于60万元的部分，可提成1.5%, \n",
    "高于100万元肘，超辻100万元的部分按l%提成，\n",
    "当键盘输入月利洞(I),求应发放奖金总数?\n",
    "'''\n",
    "def calculate_bonus(profit):\n",
    "    if profit <= 100000:\n",
    "        bonus = profit * 0.10\n",
    "    elif profit <= 200000:\n",
    "        bonus = 100000 * 0.10 + (profit - 100000) * 0.075\n",
    "    elif profit <= 400000:\n",
    "        bonus = 100000 * 0.10 + 100000 * 0.075 + (profit - 200000) * 0.05\n",
    "    elif profit <= 600000:\n",
    "        bonus = 100000 * 0.10 + 100000 * 0.075 + 200000 * 0.05 + (profit - 400000) * 0.03\n",
    "    elif profit <= 1000000:\n",
    "        bonus = 100000 * 0.10 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (profit - 600000) * 0.015\n",
    "    else:\n",
    "        bonus = 100000 * 0.10 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 + (profit - 1000000) * 0.01\n",
    "    return bonus\n",
    "\n",
    "# 输入利润1\n",
    "profit = float(input(\"请输入月利润(元): \"))\n",
    "bonus = calculate_bonus(profit)\n",
    "print(f\"应发放奖金总数为: {bonus} 元\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入系数 a: "
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入系数 b: "
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入系数 c: 方程有一个实根: -1.0\n"
     ]
    }
   ],
   "source": [
    "'''\n",
    "question 2\n",
    "求解一元额次方程组：a*x^2 + b*x + c=0,\n",
    "其中a,b,c分别为系数从键盘输入，使用分支嵌套\n",
    "'''\n",
    "def solve_quadratic(a, b, c):\n",
    "    discriminant = b**2 - 4*a*c\n",
    "    if discriminant > 0:\n",
    "        root1 = (-b + math.sqrt(discriminant)) / (2*a)\n",
    "        root2 = (-b - math.sqrt(discriminant)) / (2*a)\n",
    "        return root1, root2\n",
    "    elif discriminant == 0:\n",
    "        root = -b / (2*a)\n",
    "        return root,\n",
    "    else:\n",
    "        return None\n",
    "\n",
    "# 输入系数\n",
    "a = float(input(\"请输入系数 a: \"))\n",
    "b = float(input(\"请输入系数 b: \"))\n",
    "c = float(input(\"请输入系数 c: \"))\n",
    "\n",
    "roots = solve_quadratic(a, b, c)\n",
    "if roots:\n",
    "    if len(roots) == 2:\n",
    "        print(f\"方程有两个实根: {roots[0]} 和 {roots[1]}\")\n",
    "    else:\n",
    "        print(f\"方程有一个实根: {roots[0]}\")\n",
    "else:\n",
    "    print(\"方程无实根\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "请输入 x: 函数值为: 3528105/351217 (约分后: 3528105/351217)\n"
     ]
    }
   ],
   "source": [
    "\n",
    "'''\n",
    "question 3\n",
    "编写计算分段函数的程序\n",
    "第一段x>5时， y = sin(x)+sqrt(x^2+1)\n",
    "第二段0<x<=5时， y = e^x + log_{5}(x)+x^(1/5)\n",
    "第三段x<=0时， y = cos(x)-x^3+3x\n",
    "'''\n",
    "import math\n",
    "from fractions import Fraction\n",
    "def piecewise_function(x):\n",
    "    if x > 5:\n",
    "        y = math.sin(x) + math.sqrt(x**2 + 1)\n",
    "    elif 0 < x <= 5:\n",
    "        y = math.exp(x) + math.log(x, 5) + x**(1/5)\n",
    "    else:\n",
    "        y = math.cos(x) - x**3 + 3*x\n",
    "    return y\n",
    "\n",
    "# 输入 x\n",
    "x = float(input(\"请输入 x: \"))\n",
    "result = piecewise_function(x)\n",
    "\n",
    "# Convert result to fraction if possible\n",
    "try:\n",
    "    result_fraction = Fraction(result).limit_denominator()\n",
    "    print(f\"函数值为: {result_fraction} (约分后: {result_fraction.numerator}/{result_fraction.denominator})\")\n",
    "except:\n",
    "    print(f\"函数值为: {result}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 填空题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5\n"
     ]
    }
   ],
   "source": [
    "print(3 and 5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n"
     ]
    }
   ],
   "source": [
    "df2 = not{}\n",
    "print(df2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "28.274333882308138\n"
     ]
    }
   ],
   "source": [
    "from math import pi as PI\n",
    "\n",
    "def CircleArea(r):\n",
    "    if isinstance(r, (int,float)) and r>0:\n",
    "        return PI*r*r\n",
    "    else:\n",
    "        print('半径必须为大于0的整数或实数')\n",
    "\n",
    "a = CircleArea(3)\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.0\n"
     ]
    }
   ],
   "source": [
    "def mean(*para):\n",
    "    return sum(para)/len(para)\n",
    "\n",
    "b =mean(1,2,3)\n",
    "print(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "def rate(origin, userInput):  \n",
    "    right = sum(map(lambda oc, uc: oc==uc, origin, userInput))\n",
    "    return right"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 编程题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2, 2, 7, 11]\n"
     ]
    }
   ],
   "source": [
    "\n",
    "def factoring(n):\n",
    "    '''对大数进行因数分解'''\n",
    "    if not isinstance(n, int):\n",
    "        print('You must give me an integer')\n",
    "        return\n",
    "    # 小于n的所有素数\n",
    "    primes = [p for p in range(2, n) if 0 not in\n",
    "               [p% d for d in range(2, int(p**0.5)+1)]]\n",
    "    # 开始分解，把所有因数都添加到result列表中\n",
    "    result = []\n",
    "    for p in primes:\n",
    "        while n!=1:\n",
    "            if n%p == 0:\n",
    "                n = n//p\n",
    "                result.append(p)\n",
    "            else:\n",
    "                break\n",
    "        else:\n",
    "            return result\n",
    "    # 考虑参数本身就是素数的情况\n",
    "    if not result:\n",
    "        return [n]\n",
    "\n",
    "print(factoring(308))\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "615\n"
     ]
    }
   ],
   "source": [
    "\n",
    "def compute(n, a):\n",
    "    return sum(map(lambda i: int(str(a)*i), range(1, n+1)))\n",
    "\n",
    "print(compute(3, 5))\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4\n"
     ]
    }
   ],
   "source": [
    "from itertools import cycle\n",
    "\n",
    "def demo(lst, k):\n",
    "    #切片，以免影响原来的数据\n",
    "    t_lst = lst[:]\n",
    "    \n",
    "    #游戏一直进行到只剩下最后一个人\n",
    "    while len(t_lst) > 1:\n",
    "        #创建cycle对象\n",
    "        c = cycle(t_lst)\n",
    "        #从1到k报数\n",
    "        for i in range(k):\n",
    "            t = next(c)\n",
    "        #一个人出局，圈子缩小\n",
    "        index = t_lst.index(t)\n",
    "        t_lst = t_lst[index+1:] + t_lst[:index]\n",
    "        \n",
    "    #游戏结束\n",
    "    return t_lst[0]\n",
    "\n",
    "lst = list(range(1,11))\n",
    "print(demo(lst, 3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n",
      "False\n"
     ]
    }
   ],
   "source": [
    "def isPalindrome(text):\n",
    "    '''循环，首尾检查'''\n",
    "    length = len(text)\n",
    "    for i in range(length//2+1):\n",
    "        if text[i] != text[-1-i]:\n",
    "            return False\n",
    "    return True\n",
    "\n",
    "print(isPalindrome('deed'))\n",
    "print(isPalindrome('need'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "1. ## 操作题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "a\n",
      "b\n",
      "c\n",
      "d\n",
      "a\n",
      "b\n",
      "c\n",
      "d\n",
      "a\n",
      "b\n",
      "c\n",
      "d\n",
      "a\n",
      "b\n",
      "c\n",
      "d\n",
      "a\n",
      "b\n",
      "c\n",
      "d\n"
     ]
    }
   ],
   "source": [
    "def myCycle(iterable):\n",
    "    while True:\n",
    "        for item in iterable:\n",
    "            yield item\n",
    "\n",
    "c = myCycle('abcd')\n",
    "for i in range(20):\n",
    "    print(next(c))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "# 第五章 文件操作"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 超市营业额1.xlsx数据分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'张三': 8260, '李四': 8240, '王五': 5020, '赵六': 6800, '周七': 4810, '钱八': 4260}\n",
      "{'9:00~14:00': 17250, '14:00~21:00': 20140}\n",
      "{'化妆品': 13140, '食品': 10310, '日用品': 6460, '蔬菜水果': 7480}\n"
     ]
    }
   ],
   "source": [
    "# 超市营业额1.xlsx数据分析\n",
    "from openpyxl import load_workbook\n",
    "\n",
    "# 3个字典分别存储按员工、按时段、按柜台的销售总额\n",
    "persons = dict()\n",
    "periods = dict()\n",
    "goods = dict()\n",
    "ws = load_workbook('超市营业额1.xlsx').worksheets[0]\n",
    "for index, row in enumerate(ws.rows):\n",
    "    # 跳过第一行的表头\n",
    "    if index==0:\n",
    "        continue\n",
    "    # 获取每行的相关信息\n",
    "    _, name, _, time, num, good = map(lambda cell: cell.value, row)\n",
    "    # 根据每行的值更新三个字典\n",
    "    persons[name] = persons.get(name, 0)+num\n",
    "    periods[time] = periods.get(time, 0)+num\n",
    "    goods[good] = goods.get(good, 0)+num\n",
    "\n",
    "print(persons)\n",
    "print(periods)\n",
    "print(goods)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 每个人的爱好.xlsx数据分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "from openpyxl import load_workbook\n",
    "\n",
    "wb = load_workbook('每个人的爱好.xlsx')\n",
    "ws = wb.worksheets[0]\n",
    "for index, row in enumerate(ws.rows):\n",
    "    if index == 0:\n",
    "        titles = tuple(map(lambda cell: cell.value, row))[1:]\n",
    "        lastCol = len(titles)+2\n",
    "        ws.cell(row=index+1, column=lastCol, value='所有爱好')\n",
    "    else:\n",
    "        values  = tuple(map(lambda cell: cell.value, row))[1:]\n",
    "        result = '，'.join((titles[i] for i, v in enumerate(values)\n",
    "                              if v=='是'))\n",
    "        ws.cell(row=index+1, column=lastCol, value=result)\n",
    "\n",
    "wb.save('每个人的爱好汇总.xlsx')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "# 第六章 NumPy数组运算与矩阵运算"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 填空题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第2题： 7\n",
      "第3题： 12\n",
      "第4题： 12.0\n",
      "第5题： 0\n",
      "第6题： False\n",
      "第7题： (4, 4)\n",
      "第8题： 16\n",
      "第9题： (3,)\n",
      "第10题： (3, 4)\n",
      "第11题： 30\n",
      "第12题： 25\n",
      "第13题： 32\n",
      "第14题： 1\n",
      "第15题： 55\n",
      "第16题： 72\n",
      "第17题： 3\n",
      "第18题： 15.0\n",
      "第19题： 15\n",
      "第20题： 6\n",
      "第21题： 2\n",
      "第22题： [[2.5 3.5 4.5]]\n",
      "第23题： [[55]]\n"
     ]
    }
   ],
   "source": [
    "# 第六章课后习题，填空题\n",
    "# pip install numpy\n",
    "import numpy as np\n",
    "x2 = np.arange(8)\n",
    "# 第2题：输出x2最后一个元素\n",
    "print(\"第2题：\", x2[-1])\n",
    "\n",
    "x3 = np.zeros((3, 4))\n",
    "# 第3题：输出x3的元素个数\n",
    "print(\"第3题：\", x3.size)\n",
    "\n",
    "x4 = np.ones((3, 4)).sum()\n",
    "# 第4题：输出x4的和\n",
    "print(\"第4题：\", x4)\n",
    "\n",
    "x5 = len(np.random.rand(0, 50, 5))\n",
    "# 第5题：输出x5的长度\n",
    "print(\"第5题：\", x5)\n",
    "\n",
    "x6 = all(np.random.rand(20000) > 1)\n",
    "# 第6题：判断是否所有随机数都大于1\n",
    "print(\"第6题：\", x6)\n",
    "\n",
    "x7 = np.diag((1, 2, 3, 4)).shape\n",
    "# 第7题：输出对角矩阵的形状\n",
    "print(\"第7题：\", x7)\n",
    "\n",
    "x8 = np.diag((1, 2, 3, 4)).size\n",
    "# 第8题：输出对角矩阵的元素个数\n",
    "print(\"第8题：\", x8)\n",
    "\n",
    "x9 = np.random.randn(3).shape\n",
    "# 第9题：输出随机数组的形状\n",
    "print(\"第9题：\", x9)\n",
    "\n",
    "x10 = np.random.rand(3, 4).shape\n",
    "# 第10题：输出随机二维数组的形状\n",
    "print(\"第10题：\", x10)\n",
    "\n",
    "x11 = np.array((1, 2, 3, 4, 5))\n",
    "# 第11题：输出x11乘以2的和\n",
    "print(\"第11题：\", (x11 * 2).sum())\n",
    "\n",
    "# 第12题：输出x11平方的最大值\n",
    "print(\"第12题：\", (x11 ** 2).max())\n",
    "# 第13题：输出2的x11次方的最大值\n",
    "print(\"第13题：\", (2 ** x11).max())\n",
    "# 第14题：输出x11整除5的和\n",
    "print(\"第14题：\", (x11 // 5).sum())\n",
    "# 第15题：输出x11平方的和\n",
    "print(\"第15题：\", sum(x11 * x11))\n",
    "\n",
    "x16 = np.array([1, 2, 3])\n",
    "y16 = np.array([[3],[4], [5]])\n",
    "# 第16题：输出x16和y16的点积\n",
    "print(\"第16题：\", (x16 * y16).sum())\n",
    "\n",
    "x17 = np.array([3, 5, 1, 9, 6, 3])\n",
    "# 第17题：输出x17中最大值的索引\n",
    "print(\"第17题：\", np.argmax(x17))\n",
    "\n",
    "x18 = np.random.randint(0, 100, (3, 5))\n",
    "# 第18题：输出x18的正弦值绝对值取整后的和\n",
    "print(\"第18题：\", np.ceil(abs(np.sin(x18))).sum())\n",
    "\n",
    "x19 = np.array([3, 5, 1, 9, 6, 3])\n",
    "# 第19题：输出x19中大于5的元素的和\n",
    "print(\"第19题：\", x19[x19 > 5].sum())\n",
    "# 第20题：输出x19中大于5且为偶数的第一个元素\n",
    "print(\"第20题：\", x19[(x19 % 2 == 0) & (x19 > 5)][0])\n",
    "# 第21题：输出x19中大于5的元素个数\n",
    "print(\"第21题：\", np.where(x19 > 5, 1, 0).sum())\n",
    "\n",
    "x22 = np.matrix([[1, 2, 3], [4, 5, 6]])\n",
    "# 第22题：输出x22按列的均值\n",
    "print(\"第22题：\", x22.mean(axis=0))\n",
    "\n",
    "x23 = np.matrix([1, 2, 3, 4, 5])\n",
    "# 第23题：输出x23与其转置的乘积\n",
    "print(\"第23题：\", x23 * x23.T)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第24题（np.partition）： [9 6 5]\n",
      "第24题（自编写函数）： [9, 6, 5]\n"
     ]
    }
   ],
   "source": [
    "\n",
    "'''\n",
    "24 题：找出一个一维数组中n个最大数据，使用np.partition函数和自编写函数两种方法\n",
    "\n",
    "25 题：找出一个二维数组中唯一的行，使用np.unique函数和自编写函数两种方法\n",
    "\n",
    "'''\n",
    "# 第24题：找出一个一维数组中n个最大数据\n",
    "# 使用np.partition函数\n",
    "def top_n_with_partition(arr, n):\n",
    "    partitioned = np.partition(arr, -n)\n",
    "    return np.sort(partitioned[-n:])[::-1]\n",
    "\n",
    "# 自编写函数\n",
    "def top_n_custom(arr, n):\n",
    "    return sorted(arr, reverse=True)[:n]\n",
    "\n",
    "# 示例数组和n值\n",
    "arr24 = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5])\n",
    "n24 = 3\n",
    "\n",
    "# 输出结果\n",
    "print(\"第24题（np.partition）：\", top_n_with_partition(arr24, n24))\n",
    "print(\"第24题（自编写函数）：\", top_n_custom(arr24, n24))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第25题（np.unique）： [[1 2 3]\n",
      " [4 5 6]\n",
      " [7 8 9]]\n",
      "第25题（自编写函数）： [[1 2 3]\n",
      " [4 5 6]\n",
      " [7 8 9]]\n"
     ]
    }
   ],
   "source": [
    "# 第25题：找出一个二维数组中唯一的行\n",
    "# 使用np.unique函数\n",
    "def unique_rows_with_np(arr):\n",
    "    return np.unique(arr, axis=0)\n",
    "\n",
    "# 自编写函数\n",
    "def unique_rows_custom(arr):\n",
    "    unique_rows = []\n",
    "    for row in arr:\n",
    "        if not any(np.array_equal(row, unique_row) for unique_row in unique_rows):\n",
    "            unique_rows.append(row)\n",
    "    return np.array(unique_rows)\n",
    "\n",
    "# 示例二维数组\n",
    "arr25 = np.array([[1, 2, 3], [4, 5, 6], [1, 2, 3], [7, 8, 9]])\n",
    "\n",
    "# 输出结果\n",
    "print(\"第25题（np.unique）：\", unique_rows_with_np(arr25))\n",
    "print(\"第25题（自编写函数）：\", unique_rows_custom(arr25))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "15.0\n"
     ]
    }
   ],
   "source": [
    "df3 = np.empty((3,5)).sum()\n",
    "print(df3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "# 第7章 Pandas数据分析实战"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "## 操作题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "            日期     交易额   weekday\n",
      "24  2023-03-25  8498.0  Saturday\n",
      "20  2023-03-21  8661.0   Tuesday\n",
      "9   2023-03-10  8789.0    Friday\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "df = pd.read_excel('超市营业额2.xlsx')\n",
    "df = df.loc[:, ['日期', '交易额']].groupby('日期',\n",
    "                                               as_index=False).sum()\n",
    "df = df.nsmallest(3, '交易额')\n",
    "df['weekday'] = pd.to_datetime(df['日期']).dt.day_name()\n",
    "print(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "\n",
    "df = pd.read_excel('超市营业额2.xlsx')\n",
    "df['工号'] = df['工号'].map(lambda s: str(s)[-1]+str(s))\n",
    "df.to_excel('超市营业额2_修改工号.xlsx', index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "\n",
    "df = pd.read_excel('超市营业额2.xlsx')\n",
    "with pd.ExcelWriter('各员工数据.xlsx') as writer:\n",
    "    names = set(df['姓名'].values)\n",
    "    for name in names:\n",
    "        dff = df[df.姓名 == name]\n",
    "        dff.to_excel(writer, sheet_name=name, index=False)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.font_manager as fm\n",
    "\n",
    "df = pd.read_excel('超市营业额2.xlsx',\n",
    "                     usecols=['日期', '柜台', '交易额'])\n",
    "df = df.groupby(by=['日期','柜台'], as_index=False).sum()\n",
    "df = df.pivot(index='日期', columns='柜台', values='交易额')\n",
    "df.plot()\n",
    "myfont = fm.FontProperties(fname=r'SimHei.ttf') \n",
    "plt.xlabel('日期', fontproperties=myfont)\n",
    "plt.legend(prop=myfont)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib import font_manager\n",
    "import matplotlib.font_manager as fm\n",
    "import os\n",
    "\n",
    "# 设置图形中使用中文字体\n",
    "myfont = fm.FontProperties(fname=r'SimHei.ttf') \n",
    "df = pd.read_excel('超市营业额2.xlsx',\n",
    "                     usecols=['柜台','交易额'])\n",
    "df = df.groupby(by='柜台', as_index=False).sum()\n",
    "df.plot(x='柜台', y='交易额', kind='pie',autopct='%1.1f%%', labels=df.柜台.values,textprops={'fontproperties': myfont})\n",
    "\n",
    "explode = (0.05, 0, 0, 0, 0)  # 突出显示第一块 (搜索引擎)\n",
    "plt.ylabel('交易额',fontproperties=myfont)\n",
    "plt.legend(prop=myfont)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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YMCAOktUn7lsxJkiIiJYt25do1k7d+5MUlISPXr0oEePHuj1erp27Vrn/p49exr/0C0kjQTCqdILKnnz58Ms35ElswT4sIggPf+4shMTBnXAoK+/yubZTlL3XNzTlTHZPWH3eb1+06ZN3HnnnQQGBgKQnZ2NwWAgMjKS6upqsrOz6dSpE1A7S4DJZGL69On885//tH/O8vJy/P397UtTl5SUEBISYj/SqampISsr66wXe7Zt25alS5cyePDgc2a94IILmD9/PkOGDAEgLi6OLVu20KFDB/v9TZs22fOeSRoJhFvbd7KMeesO8/3uk8ilNaKkyswzP+xn0aZ0/i8lmb/2a9fijjd3MGjQIFJTU+0F4/3336dTp04MHjyYrKwsnnrqKSZMmMCll15a530TJ060/3nq1KmkpKRw8803A3Dbbbdx9913Ex8fT0REBHFxccDp+d3OnMjTz8+P4uJi+/3169ezZcsWpk+fXud1Wq2WiRMnEhwcDEBhYSHXXnster3efr8py263lBQd4VCHcst57scDrNmfixxDizPllhmZuTyNtzcc5cFrujCqd7xHTVZ5psLCQu644w4MBgNWq5Wvv/6auXPnMm7cOMLCwsjLy+PLL7+kTZs2VFRUkJKSwoIFC/jss8+YP38+NpsNo9HIxo0beeyxx4Da4jJt2jQCAwO56KKLmDt3LgDff/89N9xwQ53CsGXLFgBWrVrFqFGj2L17N3/961+599577UuFn2Kz2XjvvffqHOn89NNPdY50XDHw5flfNYRbKK0yM+ebPYx4bSOr90nBEed2rLCK+z/ZyYjXNrJmX67acZrt1BLRy5Yto2vXrkyaNIn77ruPzMxMHn74Ybp160ZWVhb33nsve/fuZcGCBUDt2jkDBgzg7rvv5qeffmLNmjX4+/uzbt069u7dy88//0x5eTl33XWXfV/XXHMNxcXFmEwmDhw4gMFgoFevXkDtEdbbb7/N8OHDeeutt3jsscfqFfOmzIR9an44Z5IjHdEiVpvCx1uP88qqgy5dVVN4h/055dy1eDvDukZyb79QteO0yOrVq1m6dCkAu3bt4plnnmHlypUUFRXx+uuv89FHH7F8+XIiIyMJCgpi2LBhjB8/niFDhtCuXTsSExPZsGEDY8aM4Z577qFnz5707t3bvv2AgAD7MN5XX33FNddcY191dMyYMfzr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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.font_manager as fm\n",
    "\n",
    "# 设置图形中使用中文字体\n",
    "\n",
    "df = pd.read_excel('超市营业额2.xlsx',\n",
    "                     usecols=['姓名','柜台','交易额'])\n",
    "df = df[df.姓名=='张三']\n",
    "df = df.groupby(by='柜台', as_index=False).sum()\n",
    "df.plot(x='柜台', y='交易额', kind='pie', autopct='%1.1f%%',labels=df.柜台.values,textprops={'fontproperties': myfont})\n",
    "plt.legend(prop=myfont)\n",
    "plt.ylabel('交易额',fontproperties=myfont)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": false
   },
   "source": [
    "# AI使用"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "import os # 导入 os 模块\n",
    "import re\n",
    "from openai import OpenAI\n",
    "import requests\n",
    "import json\n",
    "import time\n",
    "from rich.console import Console"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# 从环境变量中读取 API 密钥\n",
    "api_key = os.getenv(\"OPENAI_API_KEY\")\n",
    "base_url = \"https://api-nejdk8n346qb53b8.aistudio-app.com/v1\" # 您的 base_url\n",
    "\n",
    "if not api_key:\n",
    "   print(\"错误：OPENAI_API_KEY 环境变量未设置。\")\n",
    "   print(\"请设置 OPENAI_API_KEY 环境变量后重试。\")\n",
    "   exit()\n",
    "\n",
    "# 从命令行获取用户输入的问题\n",
    "user_question = input(\"请输入您的问题: \")\n",
    "\n",
    "client = OpenAI(\n",
    "        api_key=api_key, # 使用从环境变量读取的密钥\n",
    "        base_url=base_url\n",
    ")\n",
    "\n",
    "print(\"\\nAI 正在思考，请稍候...\\n\")\n",
    "\n",
    "try:\n",
    "    completion = client.chat.completions.create(\n",
    "        model=\"deepseek-r1:70b\",\n",
    "        temperature=0.6,\n",
    "        messages=[\n",
    "             {\"role\": \"user\", \"content\": user_question} # 使用从命令行获取的问题\n",
    "        ],\n",
    "        stream=True\n",
    "    )\n",
    "    full_response = \"\"\n",
    "    for chunk in completion:\n",
    "        content = None\n",
    "        if hasattr(chunk.choices[0].delta, \"reasoning_content\") and chunk.choices[0].delta.reasoning_content:\n",
    "            content = chunk.choices[0].delta.reasoning_content\n",
    "        elif hasattr(chunk.choices[0].delta, \"content\") and chunk.choices[0].delta.content:\n",
    "            content = chunk.choices[0].delta.content\n",
    "\n",
    "        if content:\n",
    "            print(content, end=\"\", flush=True)                                                                                  \n",
    "            full_response += content\n",
    "    print() # 在流式输出结束后换行\n",
    "\n",
    "except Exception as e:\n",
    "    print(f\"\\n发生错误: {e}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "            "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "py35-paddle1.2.0"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
